/*
 * Carta.cpp
 * Created on: 22/09/2011
 * Author: Arthur Brasileiro
 */

#include "model/Carta.h"

Carta::Carta() {
}

Carta::Carta(int numero, int naipe) {
	String numeros[13] = {"DOIS", "TRES", "QUATRO", "CINCO", "SEIS",
			"SETE", "OITO", "NOVE", "DEZ", "VALETE", "DAMA", "REI", "AS"};
	String naipes[4] = {"ESPADAS", "COPAS", "PAUS", "OUROS"};

	this->numero = numero;
	this->naipe = naipe;

	this->nome = numeros[numero] + " DE " + naipes[naipe];
}

Carta::~Carta() {
}

String Carta::ToString() {
	return nome;
}

int Carta::GetNumero() {
	return this->numero;
}

int Carta::GetNaipe() {
	return this->naipe;
}

bool Carta::IsAntes(Carta *c)
{
	if(this->numero == AS){
		return (c->GetNumero() == DOIS);
	}

	return (this->GetNumero() == c->GetNumero()-1);
}

bool Carta::IsMesmoNumero(Carta *c)
{
	return (this->numero == c->numero);
}

bool Carta::IsMesmoNaipe(Carta *c)
{
	return (this->naipe == c->naipe);
}

bool Carta::IsDepois(Carta *c)
{
	return c->IsAntes(this);
}

bool Carta::ValeMais(Carta *c)
{
	return (this->GetNumero() > c->GetNumero());
}

bool Carta::Equals(Carta* c){
	return (IsMesmoNaipe(c))&&(IsMesmoNumero(c));
}
